package algorithmTopics.array;

import java.util.Arrays;

public class test8 {
    public static void main(String[] args) {

        test8 test7 = new test8();
        int[] ints = new int[]{0,0,1,9};
        test7.moveZeroes(ints);
        System.out.println(Arrays.toString(ints));
    }

    public void moveZeroes(int[] ints) {
        //参考大神的思路
        /*这里可以参照双指针的思路解决，指针j是一直往后移动的，
        如果指向的值不等于0才对他进行操作。而i统计的是前面0的个数，
        我们可以把j-i看做另一个指针，它是指向前面第一个0的位置，然后我们让j指向的值和j-i指向的值交换*/
        int zeroNum = 0;
        for (int i = 0; i < ints.length; i++) {
            if (ints[i] == 0) {
                zeroNum++;
            } else if (zeroNum != 0) {
                ints[i - zeroNum] = ints[i];
                ints[i] = 0;
            }
        }



    }




    /*public void moveZeroes(int[] nums) {
    // 排序，从大到小,太慢了
        int[] copy = new int[nums.length];
        System.arraycopy(nums,0,copy,0,nums.length);
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] < 0) {
                nums[i] = 1;
            }
        }
        int temp ;
        Arrays.sort(nums);
        //翻转
        for (int i = 0; i < nums.length / 2; i++) {
            temp = nums[i];
            nums[nums.length - 1 - i] = nums[i];
            nums[i] = temp;
        }
        int count  = 0;
        for (int i = 0; i < copy.length; i++) {
            if (copy[i] != 0) {
                nums[count] = copy[i];
                count++;
            }
        }

    }*/


}
